package com.ruoyi.predict.utils;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import java.util.ArrayList;
import java.util.List;

public class JsonCleanUtils {

    /**
     * 清理JSON中的无效内容（如toolExecutionRequests = null等非JSON语法）
     * @param rawJson 原始JSON字符串
     * @return 纯净的JSON数组字符串
     */
    public static String cleanJsonWithInvalidContent(String rawJson) {
        if (rawJson == null || rawJson.trim().isEmpty()) {
            return "[]";
        }

        try {
            // 1. 移除所有非JSON语法的键值对（如 toolExecutionRequests = null）
            // 匹配模式：空格+任意字符+=(任意字符，非}]结尾)
            String cleaned = rawJson.replaceAll("\\s+[^:]+=[^}\\]]+", "");

            // 2. 修复可能的引号不匹配问题（移除多余的引号）
            cleaned = cleaned.replaceAll("\"+", "\"") // 合并连续引号
                             .replaceAll("\"\\s+}", "\"}") // 修复 " } 为 "}"
                             .replaceAll("\"\\s+]", "\"]"); // 修复 " ] 为 "]"

            // 3. 确保JSON数组格式正确（首尾为[]）
            if (!cleaned.startsWith("[")) {
                cleaned = "[" + cleaned;
            }
            if (!cleaned.endsWith("]")) {
                cleaned = cleaned + "]";
            }

            // 4. 用JSON解析器验证并再次清理（确保格式正确）
            JSONArray.parseArray(cleaned); // 验证失败会抛出异常
            return cleaned;

        } catch (Exception e) {
            // 若清理失败，返回空数组
            return "[]";
        }
    }
}